import org.junit.jupiter.api.Test;

import java.util.Arrays;


/**
 * 先排序，然后先固定两个数，在剩下的里面找两个数的和等于相反数，去重
 */
public class 二分查找迭代器实现_递归实现 {



@Test
public void test() {

        int []array= {1,2,4,5};
        System.out.println(binarySearch(array, 4,0,3));
}

/**
 * 二分查找：首先将定义左中右三个位置，每次拿中间位置的值去和目标值比较，要是相同就返回
 * 要是小于中间值，就将有边界设置为middle-1
 * 要是大于中间值，就将左边界设置为middle+1
 * @param array
 * @param value
 * @return
 */
        public static int binarySearch(int[] array, int value,int left,int right) {
            //递归结束条件，就是没找到结果的条件
            if (left>right){
                return -1;
            }
            int middle=left+(right-left)/2;
            if (value<array[middle]){
                return binarySearch(array,value,left,middle-1);
            }else if (value>array[middle]){
                return binarySearch(array,value,middle+1,right);
            }else {
                return middle;
            }
        }
    }








